/**
 * @param {number[]} nums
 * @param {number} k
 * @return {number}
 */
var subarraySum = function (nums, k) {
  let map = new Map(),count=0,pre=0
  map.set(0,1)
  for(let i=0;i<nums.length;i++){
    pre+=nums[i]
    if(map.has(pre-k)){
      count+=map.get(pre-k)
    }
    if(map.has(pre)){
      map.set(pre,map.get(pre)+1)
    }else {
      map.set(pre,1)
    }
  }
  return count
};

subarraySum([1, 1, 1], 2)